#include "maindialog.h"
#include <QMessageBox>
#include <QDir>

mainDialog::mainDialog(QWidget *parent) :
    QDialog(parent)
{
    setupUi(this);

    setWindowIcon(QIcon("./images/icon.ico"));
}

void mainDialog::checked()
{
    bool reverse   = _resultDialog->  reverseCheck->isChecked();
    bool oneString = _resultDialog->oneStringCheck->isChecked();

    QString resultText;

    if( reverse )
    {
        if( oneString )
        {
            for( register int i = results.count() - 1; i > 0; i--)
            {
                results = results.at(i).remove('\n');
                resultText += results;
            }
            resultText = resultText.remove('\n');   // Дополнительная очистка
        }
        else
        {
            for( register int i = results.count() - 1; i > 0; i--)
            {
                resultText += results;
            }
        }
    }
    else
    {
        if( oneString )
        {
            for( register int i = 0; i < results.count() - 1; i++)
            {
                results = results.at(i).remove('\n');
                resultText += results;
            }
            resultText = resultText.remove('\n');   // Дополнительная очистка
        }
        else
        {
            for( register int i = 0; i < results.count() - 1; i++)
            {
            }
       }
    }
}

void mainDialog::on_getResultButton_clicked()
{
    if( toSpinBox->value() == fromSpinBox->value())
    {
        QMessageBox::information(this, "Nothing to do", "<center>Values must be different</center>",
                             QMessageBox::Ok);
    }
    else
    {
        _resultDialog = new resultDialog;
        connect( _resultDialog->oneStringCheck, SIGNAL(toggled(bool)), SLOT(checked()));
        connect( _resultDialog->reverseCheck,   SIGNAL(toggled(bool)), SLOT(checked()));

        if( zerosCheck->isChecked() )
            numOfZeros = zerosSpinBox->value();

        bool backward = fromSpinBox->value() > toSpinBox->value();
        int i = fromSpinBox->value();

        if( !backward)
            for( i; i <= toSpinBox->value(); i++)
                addToResult(i);
        else
            for( i; i >= toSpinBox->value(); i--)
                addToResult(i);


        _resultDialog->show(); // When all is done, show the dialog
    }
}

void mainDialog::addToResult(int val)
{
    bool noMoreZeros = false;
    QString zeros;
    int numOfDigits = QString("%1").arg(val).length();

    if( numOfDigits > zerosSpinBox->value() )
        noMoreZeros = true;

    if( zerosCheck->isChecked() && !noMoreZeros)
    {
        for( int i = 0; i < numOfZeros; i++) zeros += '0';

        zeros.remove( zeros.length() - numOfDigits , numOfDigits - 1 );
    }

    results.push_back( QString( beforeLine->text() + "%1%2" + afterText->text() + '\n')
                                                             .arg(zeros)
                                                             .arg(val));
}
